const { getUserInfo } = require("@/service/user");
const bcrypt = require('bcryptjs');
const Response = require("../utils/response");

const validateUser = async (ctx, next) => {
  const { username } = ctx.request.body; // 获取请求体中的用户名
  try {
    const res = await getUserInfo({ username }); // 调用服务层获取用户信息
    if (res) {
      return Response.error(ctx, '用户名已存在', 400);
    }
    await next();
  } catch (error) {
    Response.error(ctx, '获取用户信息失败', 500, error);
  }
};

// 密码加密
const bcryptPWD = async (ctx, next) => {
  const { password } = ctx.request.body;

  if(!password) {
    return Response.error(ctx, '密码不能为空');
  }

  const salt = bcrypt.genSaltSync(10); // 加盐 
  const hash = bcrypt.hashSync(password, salt); // 加密
  ctx.request.body.password = hash; // 将加密后的密码赋值给请求体
  await next(); // 执行下一个中间件
};

module.exports = { validateUser  , bcryptPWD};